/**
 * 2009 David BY Chan--lifesting@gmail.com
 *
 * $Id$
 */
package com.lifesting.workflow.model.gd.impl;

import com.lifesting.workflow.model.gd.Action;
import com.lifesting.workflow.model.gd.CreateTimerType;
import com.lifesting.workflow.model.gd.Decision;
import com.lifesting.workflow.model.gd.DocumentRoot;
import com.lifesting.workflow.model.gd.End;
import com.lifesting.workflow.model.gd.Esb;
import com.lifesting.workflow.model.gd.Event;
import com.lifesting.workflow.model.gd.EventType;
import com.lifesting.workflow.model.gd.Fork;
import com.lifesting.workflow.model.gd.GdFactory;
import com.lifesting.workflow.model.gd.GdPackage;
import com.lifesting.workflow.model.gd.GraphElement;
import com.lifesting.workflow.model.gd.Join;
import com.lifesting.workflow.model.gd.Mail;
import com.lifesting.workflow.model.gd.Node;
import com.lifesting.workflow.model.gd.ProcessState;
import com.lifesting.workflow.model.gd.Start;
import com.lifesting.workflow.model.gd.State;
import com.lifesting.workflow.model.gd.SuperState;
import com.lifesting.workflow.model.gd.Task;
import com.lifesting.workflow.model.gd.TaskContainer;
import com.lifesting.workflow.model.gd.Transition;

import com.lifesting.workflow.model.gd.Variable;
import com.lifesting.workflow.model.gd.WebService;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EDataType;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;

import org.eclipse.emf.ecore.impl.EPackageImpl;

import org.eclipse.emf.ecore.xml.type.XMLTypePackage;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Package</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class GdPackageImpl extends EPackageImpl implements GdPackage {
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass actionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass createTimerTypeEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass decisionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass documentRootEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass endEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass esbEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass eventEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass forkEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass graphElementEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass joinEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass mailEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass nodeEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass processEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass processStateEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass startEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass stateEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass superStateEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass taskEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass taskContainerEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass transitionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass variableEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass webServiceEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum eventTypeEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EDataType eventTypeObjectEDataType = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EDataType expressionEDataType = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EDataType javaclassEDataType = null;

	/**
	 * Creates an instance of the model <b>Package</b>, registered with
	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
	 * package URI value.
	 * <p>Note: the correct way to create the package is via the static
	 * factory method {@link #init init()}, which also performs
	 * initialization of the package, or returns the registered package,
	 * if one already exists.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.emf.ecore.EPackage.Registry
	 * @see com.lifesting.workflow.model.gd.GdPackage#eNS_URI
	 * @see #init()
	 * @generated
	 */
	private GdPackageImpl() {
		super(eNS_URI, GdFactory.eINSTANCE);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private static boolean isInited = false;

	/**
	 * Creates, registers, and initializes the <b>Package</b> for this
	 * model, and for any others upon which it depends.  Simple
	 * dependencies are satisfied by calling this method on all
	 * dependent packages before doing anything else.  This method drives
	 * initialization for interdependent packages directly, in parallel
	 * with this package, itself.
	 * <p>Of this package and its interdependencies, all packages which
	 * have not yet been registered by their URI values are first created
	 * and registered.  The packages are then initialized in two steps:
	 * meta-model objects for all of the packages are created before any
	 * are initialized, since one package's meta-model objects may refer to
	 * those of another.
	 * <p>Invocation of this method will not affect any packages that have
	 * already been initialized.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #eNS_URI
	 * @see #createPackageContents()
	 * @see #initializePackageContents()
	 * @generated
	 */
	public static GdPackage init() {
		if (isInited) return (GdPackage)EPackage.Registry.INSTANCE.getEPackage(GdPackage.eNS_URI);

		// Obtain or create and register package
		GdPackageImpl theGdPackage = (GdPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof GdPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new GdPackageImpl());

		isInited = true;

		// Initialize simple dependencies
		XMLTypePackage.eINSTANCE.eClass();

		// Create package meta-data objects
		theGdPackage.createPackageContents();

		// Initialize created meta-data
		theGdPackage.initializePackageContents();

		// Mark meta-data to indicate it can't be changed
		theGdPackage.freeze();

		return theGdPackage;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getAction() {
		return actionEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getAction_Async() {
		return (EAttribute)actionEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getAction_Class() {
		return (EAttribute)actionEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getCreateTimerType() {
		return createTimerTypeEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getCreateTimerType_Action() {
		return (EReference)createTimerTypeEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getCreateTimerType_Duedate() {
		return (EAttribute)createTimerTypeEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getCreateTimerType_Name() {
		return (EAttribute)createTimerTypeEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getCreateTimerType_Transition() {
		return (EReference)createTimerTypeEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getDecision() {
		return decisionEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getDecision_Goto() {
		return (EAttribute)decisionEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getDecision_Handle() {
		return (EAttribute)decisionEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getDocumentRoot() {
		return documentRootEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getDocumentRoot_Mixed() {
		return (EAttribute)documentRootEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getDocumentRoot_XMLNSPrefixMap() {
		return (EReference)documentRootEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getDocumentRoot_XSISchemaLocation() {
		return (EReference)documentRootEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getDocumentRoot_Process() {
		return (EReference)documentRootEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getEnd() {
		return endEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getEsb() {
		return esbEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getEvent() {
		return eventEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getEvent_TimerAction() {
		return (EAttribute)eventEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getEvent_CreateTimer() {
		return (EReference)eventEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getEvent_CancelTimer() {
		return (EAttribute)eventEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getEvent_Action() {
		return (EReference)eventEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getEvent_Type() {
		return (EAttribute)eventEClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getFork() {
		return forkEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getGraphElement() {
		return graphElementEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getGraphElement_Variable() {
		return (EReference)graphElementEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getGraphElement_Action() {
		return (EReference)graphElementEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getGraphElement_Description() {
		return (EAttribute)graphElementEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getGraphElement_Name() {
		return (EAttribute)graphElementEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getJoin() {
		return joinEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getMail() {
		return mailEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getNode() {
		return nodeEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getNode_Transition() {
		return (EReference)nodeEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getNode_Event() {
		return (EReference)nodeEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProcess() {
		return processEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getProcess_Start() {
		return (EReference)processEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProcess_WorkflowDefinition() {
		return (EAttribute)processEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getProcess_State() {
		return (EReference)processEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getProcess_Join() {
		return (EReference)processEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getProcess_Fork() {
		return (EReference)processEClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getProcess_Decision() {
		return (EReference)processEClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getProcess_SuperState() {
		return (EReference)processEClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getProcess_ProcessState() {
		return (EReference)processEClass.getEStructuralFeatures().get(7);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getProcess_Mail() {
		return (EReference)processEClass.getEStructuralFeatures().get(8);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getProcess_Esb() {
		return (EReference)processEClass.getEStructuralFeatures().get(9);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getProcess_TaskNode() {
		return (EReference)processEClass.getEStructuralFeatures().get(11);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getProcess_WsNode() {
		return (EReference)processEClass.getEStructuralFeatures().get(10);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getProcess_End() {
		return (EReference)processEClass.getEStructuralFeatures().get(12);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getProcess_CreateTimer() {
		return (EReference)processEClass.getEStructuralFeatures().get(13);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProcessState() {
		return processStateEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getStart() {
		return startEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getState() {
		return stateEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getSuperState() {
		return superStateEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getTask() {
		return taskEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getTask_Blocking() {
		return (EAttribute)taskEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getTask_Duedate() {
		return (EAttribute)taskEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getTaskContainer() {
		return taskContainerEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getTaskContainer_Task() {
		return (EReference)taskContainerEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getTransition() {
		return transitionEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getTransition_From() {
		return (EReference)transitionEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getTransition_If() {
		return (EAttribute)transitionEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getTransition_To() {
		return (EReference)transitionEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getVariable() {
		return variableEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getVariable_InitValue() {
		return (EAttribute)variableEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getVariable_Name() {
		return (EAttribute)variableEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getVariable_Type() {
		return (EAttribute)variableEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getWebService() {
		return webServiceEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getEventType() {
		return eventTypeEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EDataType getEventTypeObject() {
		return eventTypeObjectEDataType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EDataType getExpression() {
		return expressionEDataType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EDataType getJavaclass() {
		return javaclassEDataType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public GdFactory getGdFactory() {
		return (GdFactory)getEFactoryInstance();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isCreated = false;

	/**
	 * Creates the meta-model objects for the package.  This method is
	 * guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void createPackageContents() {
		if (isCreated) return;
		isCreated = true;

		// Create classes and their features
		actionEClass = createEClass(ACTION);
		createEAttribute(actionEClass, ACTION__ASYNC);
		createEAttribute(actionEClass, ACTION__CLASS);

		createTimerTypeEClass = createEClass(CREATE_TIMER_TYPE);
		createEReference(createTimerTypeEClass, CREATE_TIMER_TYPE__ACTION);
		createEAttribute(createTimerTypeEClass, CREATE_TIMER_TYPE__DUEDATE);
		createEAttribute(createTimerTypeEClass, CREATE_TIMER_TYPE__NAME);
		createEReference(createTimerTypeEClass, CREATE_TIMER_TYPE__TRANSITION);

		decisionEClass = createEClass(DECISION);
		createEAttribute(decisionEClass, DECISION__GOTO);
		createEAttribute(decisionEClass, DECISION__HANDLE);

		documentRootEClass = createEClass(DOCUMENT_ROOT);
		createEAttribute(documentRootEClass, DOCUMENT_ROOT__MIXED);
		createEReference(documentRootEClass, DOCUMENT_ROOT__XMLNS_PREFIX_MAP);
		createEReference(documentRootEClass, DOCUMENT_ROOT__XSI_SCHEMA_LOCATION);
		createEReference(documentRootEClass, DOCUMENT_ROOT__PROCESS);

		endEClass = createEClass(END);

		esbEClass = createEClass(ESB);

		eventEClass = createEClass(EVENT);
		createEAttribute(eventEClass, EVENT__TIMER_ACTION);
		createEReference(eventEClass, EVENT__CREATE_TIMER);
		createEAttribute(eventEClass, EVENT__CANCEL_TIMER);
		createEReference(eventEClass, EVENT__ACTION);
		createEAttribute(eventEClass, EVENT__TYPE);

		forkEClass = createEClass(FORK);

		graphElementEClass = createEClass(GRAPH_ELEMENT);
		createEReference(graphElementEClass, GRAPH_ELEMENT__VARIABLE);
		createEReference(graphElementEClass, GRAPH_ELEMENT__ACTION);
		createEAttribute(graphElementEClass, GRAPH_ELEMENT__DESCRIPTION);
		createEAttribute(graphElementEClass, GRAPH_ELEMENT__NAME);

		joinEClass = createEClass(JOIN);

		mailEClass = createEClass(MAIL);

		nodeEClass = createEClass(NODE);
		createEReference(nodeEClass, NODE__TRANSITION);
		createEReference(nodeEClass, NODE__EVENT);

		processEClass = createEClass(PROCESS);
		createEReference(processEClass, PROCESS__START);
		createEAttribute(processEClass, PROCESS__WORKFLOW_DEFINITION);
		createEReference(processEClass, PROCESS__STATE);
		createEReference(processEClass, PROCESS__JOIN);
		createEReference(processEClass, PROCESS__FORK);
		createEReference(processEClass, PROCESS__DECISION);
		createEReference(processEClass, PROCESS__SUPER_STATE);
		createEReference(processEClass, PROCESS__PROCESS_STATE);
		createEReference(processEClass, PROCESS__MAIL);
		createEReference(processEClass, PROCESS__ESB);
		createEReference(processEClass, PROCESS__WS_NODE);
		createEReference(processEClass, PROCESS__TASK_NODE);
		createEReference(processEClass, PROCESS__END);
		createEReference(processEClass, PROCESS__CREATE_TIMER);

		processStateEClass = createEClass(PROCESS_STATE);

		startEClass = createEClass(START);

		stateEClass = createEClass(STATE);

		superStateEClass = createEClass(SUPER_STATE);

		taskEClass = createEClass(TASK);
		createEAttribute(taskEClass, TASK__BLOCKING);
		createEAttribute(taskEClass, TASK__DUEDATE);

		taskContainerEClass = createEClass(TASK_CONTAINER);
		createEReference(taskContainerEClass, TASK_CONTAINER__TASK);

		transitionEClass = createEClass(TRANSITION);
		createEReference(transitionEClass, TRANSITION__FROM);
		createEAttribute(transitionEClass, TRANSITION__IF);
		createEReference(transitionEClass, TRANSITION__TO);

		variableEClass = createEClass(VARIABLE);
		createEAttribute(variableEClass, VARIABLE__INIT_VALUE);
		createEAttribute(variableEClass, VARIABLE__NAME);
		createEAttribute(variableEClass, VARIABLE__TYPE);

		webServiceEClass = createEClass(WEB_SERVICE);

		// Create enums
		eventTypeEEnum = createEEnum(EVENT_TYPE);

		// Create data types
		eventTypeObjectEDataType = createEDataType(EVENT_TYPE_OBJECT);
		expressionEDataType = createEDataType(EXPRESSION);
		javaclassEDataType = createEDataType(JAVACLASS);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isInitialized = false;

	/**
	 * Complete the initialization of the package and its meta-model.  This
	 * method is guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void initializePackageContents() {
		if (isInitialized) return;
		isInitialized = true;

		// Initialize package
		setName(eNAME);
		setNsPrefix(eNS_PREFIX);
		setNsURI(eNS_URI);

		// Obtain other dependent packages
		XMLTypePackage theXMLTypePackage = (XMLTypePackage)EPackage.Registry.INSTANCE.getEPackage(XMLTypePackage.eNS_URI);

		// Create type parameters

		// Set bounds for type parameters

		// Add supertypes to classes
		decisionEClass.getESuperTypes().add(this.getNode());
		endEClass.getESuperTypes().add(this.getNode());
		esbEClass.getESuperTypes().add(this.getNode());
		forkEClass.getESuperTypes().add(this.getNode());
		joinEClass.getESuperTypes().add(this.getNode());
		mailEClass.getESuperTypes().add(this.getNode());
		nodeEClass.getESuperTypes().add(this.getGraphElement());
		processEClass.getESuperTypes().add(this.getGraphElement());
		processStateEClass.getESuperTypes().add(this.getNode());
		startEClass.getESuperTypes().add(this.getNode());
		stateEClass.getESuperTypes().add(this.getNode());
		superStateEClass.getESuperTypes().add(this.getNode());
		taskEClass.getESuperTypes().add(this.getGraphElement());
		taskContainerEClass.getESuperTypes().add(this.getNode());
		transitionEClass.getESuperTypes().add(this.getGraphElement());
		webServiceEClass.getESuperTypes().add(this.getNode());

		// Initialize classes and features; add operations and parameters
		initEClass(actionEClass, Action.class, "Action", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getAction_Async(), theXMLTypePackage.getBoolean(), "async", null, 0, 1, Action.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getAction_Class(), theXMLTypePackage.getString(), "class", null, 0, 1, Action.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(createTimerTypeEClass, CreateTimerType.class, "CreateTimerType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getCreateTimerType_Action(), this.getAction(), null, "action", null, 0, 1, CreateTimerType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getCreateTimerType_Duedate(), theXMLTypePackage.getString(), "duedate", null, 0, 1, CreateTimerType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getCreateTimerType_Name(), theXMLTypePackage.getString(), "name", null, 0, 1, CreateTimerType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getCreateTimerType_Transition(), this.getNode(), null, "transition", null, 0, 1, CreateTimerType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(decisionEClass, Decision.class, "Decision", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getDecision_Goto(), this.getExpression(), "goto", null, 0, 1, Decision.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getDecision_Handle(), this.getJavaclass(), "handle", null, 0, 1, Decision.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(documentRootEClass, DocumentRoot.class, "DocumentRoot", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getDocumentRoot_Mixed(), ecorePackage.getEFeatureMapEntry(), "mixed", null, 0, -1, null, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getDocumentRoot_XMLNSPrefixMap(), ecorePackage.getEStringToStringMapEntry(), null, "xMLNSPrefixMap", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getDocumentRoot_XSISchemaLocation(), ecorePackage.getEStringToStringMapEntry(), null, "xSISchemaLocation", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getDocumentRoot_Process(), this.getProcess(), null, "process", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);

		initEClass(endEClass, End.class, "End", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(esbEClass, Esb.class, "Esb", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(eventEClass, Event.class, "Event", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getEvent_TimerAction(), ecorePackage.getEFeatureMapEntry(), "timerAction", null, 0, -1, Event.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getEvent_CreateTimer(), this.getCreateTimerType(), null, "createTimer", null, 0, -1, Event.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
		initEAttribute(getEvent_CancelTimer(), theXMLTypePackage.getString(), "cancelTimer", null, 0, -1, Event.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, IS_DERIVED, IS_ORDERED);
		initEReference(getEvent_Action(), this.getAction(), null, "action", null, 0, 1, Event.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getEvent_Type(), this.getEventType(), "type", null, 0, 1, Event.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(forkEClass, Fork.class, "Fork", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(graphElementEClass, GraphElement.class, "GraphElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getGraphElement_Variable(), this.getVariable(), null, "variable", null, 0, -1, GraphElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getGraphElement_Action(), this.getAction(), null, "action", null, 0, 1, GraphElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getGraphElement_Description(), theXMLTypePackage.getString(), "description", null, 0, 1, GraphElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getGraphElement_Name(), theXMLTypePackage.getID(), "name", null, 0, 1, GraphElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(joinEClass, Join.class, "Join", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(mailEClass, Mail.class, "Mail", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(nodeEClass, Node.class, "Node", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getNode_Transition(), this.getTransition(), this.getTransition_From(), "transition", null, 0, -1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getNode_Event(), this.getEvent(), null, "event", null, 0, -1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(processEClass, com.lifesting.workflow.model.gd.Process.class, "Process", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getProcess_Start(), this.getStart(), null, "start", null, 1, 1, com.lifesting.workflow.model.gd.Process.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getProcess_WorkflowDefinition(), ecorePackage.getEFeatureMapEntry(), "workflowDefinition", null, 0, -1, com.lifesting.workflow.model.gd.Process.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getProcess_State(), this.getState(), null, "state", null, 0, -1, com.lifesting.workflow.model.gd.Process.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
		initEReference(getProcess_Join(), this.getJoin(), null, "join", null, 0, -1, com.lifesting.workflow.model.gd.Process.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
		initEReference(getProcess_Fork(), this.getFork(), null, "fork", null, 0, -1, com.lifesting.workflow.model.gd.Process.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
		initEReference(getProcess_Decision(), this.getDecision(), null, "decision", null, 0, -1, com.lifesting.workflow.model.gd.Process.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
		initEReference(getProcess_SuperState(), this.getSuperState(), null, "superState", null, 0, -1, com.lifesting.workflow.model.gd.Process.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
		initEReference(getProcess_ProcessState(), this.getProcessState(), null, "processState", null, 0, -1, com.lifesting.workflow.model.gd.Process.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
		initEReference(getProcess_Mail(), this.getMail(), null, "mail", null, 0, -1, com.lifesting.workflow.model.gd.Process.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
		initEReference(getProcess_Esb(), this.getEsb(), null, "esb", null, 0, -1, com.lifesting.workflow.model.gd.Process.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
		initEReference(getProcess_WsNode(), this.getWebService(), null, "wsNode", null, 0, -1, com.lifesting.workflow.model.gd.Process.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
		initEReference(getProcess_TaskNode(), this.getTaskContainer(), null, "taskNode", null, 0, -1, com.lifesting.workflow.model.gd.Process.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
		initEReference(getProcess_End(), this.getEnd(), null, "end", null, 1, 1, com.lifesting.workflow.model.gd.Process.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getProcess_CreateTimer(), this.getCreateTimerType(), null, "createTimer", null, 0, -1, com.lifesting.workflow.model.gd.Process.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(processStateEClass, ProcessState.class, "ProcessState", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(startEClass, Start.class, "Start", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(stateEClass, State.class, "State", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(superStateEClass, SuperState.class, "SuperState", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(taskEClass, Task.class, "Task", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getTask_Blocking(), theXMLTypePackage.getBoolean(), "blocking", null, 0, 1, Task.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getTask_Duedate(), theXMLTypePackage.getDate(), "duedate", null, 0, 1, Task.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(taskContainerEClass, TaskContainer.class, "TaskContainer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getTaskContainer_Task(), this.getTask(), null, "task", null, 0, -1, TaskContainer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(transitionEClass, Transition.class, "Transition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getTransition_From(), this.getNode(), this.getNode_Transition(), "from", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getTransition_If(), this.getExpression(), "if", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTransition_To(), this.getNode(), null, "to", null, 1, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(variableEClass, Variable.class, "Variable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getVariable_InitValue(), theXMLTypePackage.getAnySimpleType(), "initValue", null, 0, 1, Variable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getVariable_Name(), theXMLTypePackage.getString(), "name", null, 0, 1, Variable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getVariable_Type(), theXMLTypePackage.getString(), "type", null, 0, 1, Variable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(webServiceEClass, WebService.class, "WebService", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		// Initialize enums and add enum literals
		initEEnum(eventTypeEEnum, EventType.class, "EventType");
		addEEnumLiteral(eventTypeEEnum, EventType.NODE_ENTER);
		addEEnumLiteral(eventTypeEEnum, EventType.NODE_LEAVE);
		addEEnumLiteral(eventTypeEEnum, EventType.PROCESS_START);
		addEEnumLiteral(eventTypeEEnum, EventType.PROCESS_END);
		addEEnumLiteral(eventTypeEEnum, EventType.TASK_CREATE);
		addEEnumLiteral(eventTypeEEnum, EventType.TASK_ASSIGN);
		addEEnumLiteral(eventTypeEEnum, EventType.TASK_START);
		addEEnumLiteral(eventTypeEEnum, EventType.TASK_END);
		addEEnumLiteral(eventTypeEEnum, EventType.BEFORE_SIGNAL);
		addEEnumLiteral(eventTypeEEnum, EventType.AFTER_SIGNAL);
		addEEnumLiteral(eventTypeEEnum, EventType.SUPERSTATE_ENTER);
		addEEnumLiteral(eventTypeEEnum, EventType.SUPERSTATE_LEAVE);
		addEEnumLiteral(eventTypeEEnum, EventType.TIMER_CREATE);
		addEEnumLiteral(eventTypeEEnum, EventType.SUBPROCESS_CREATED);
		addEEnumLiteral(eventTypeEEnum, EventType.SUBPROCESS_END);
		addEEnumLiteral(eventTypeEEnum, EventType.TRANSITION);

		// Initialize data types
		initEDataType(eventTypeObjectEDataType, EventType.class, "EventTypeObject", IS_SERIALIZABLE, IS_GENERATED_INSTANCE_CLASS);
		initEDataType(expressionEDataType, String.class, "Expression", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
		initEDataType(javaclassEDataType, String.class, "Javaclass", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);

		// Create resource
		createResource(eNS_URI);

		// Create annotations
		// http:///org/eclipse/emf/ecore/util/ExtendedMetaData
		createExtendedMetaDataAnnotations();
	}

	/**
	 * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected void createExtendedMetaDataAnnotations() {
		String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";		
		addAnnotation
		  (actionEClass, 
		   source, 
		   new String[] {
			 "name", "action",
			 "kind", "empty"
		   });		
		addAnnotation
		  (getAction_Async(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "async"
		   });		
		addAnnotation
		  (getAction_Class(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "class"
		   });		
		addAnnotation
		  (createTimerTypeEClass, 
		   source, 
		   new String[] {
			 "name", "create_timer_type",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getCreateTimerType_Action(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "action",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (getCreateTimerType_Duedate(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "duedate"
		   });		
		addAnnotation
		  (getCreateTimerType_Name(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "name"
		   });		
		addAnnotation
		  (getCreateTimerType_Transition(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "transition"
		   });		
		addAnnotation
		  (decisionEClass, 
		   source, 
		   new String[] {
			 "name", "decision",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getDecision_Goto(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "goto"
		   });		
		addAnnotation
		  (getDecision_Handle(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "handle"
		   });		
		addAnnotation
		  (documentRootEClass, 
		   source, 
		   new String[] {
			 "name", "",
			 "kind", "mixed"
		   });		
		addAnnotation
		  (getDocumentRoot_Mixed(), 
		   source, 
		   new String[] {
			 "kind", "elementWildcard",
			 "name", ":mixed"
		   });		
		addAnnotation
		  (getDocumentRoot_XMLNSPrefixMap(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "xmlns:prefix"
		   });		
		addAnnotation
		  (getDocumentRoot_XSISchemaLocation(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "xsi:schemaLocation"
		   });		
		addAnnotation
		  (getDocumentRoot_Process(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "process",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (endEClass, 
		   source, 
		   new String[] {
			 "name", "end",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (esbEClass, 
		   source, 
		   new String[] {
			 "name", "esb",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (eventEClass, 
		   source, 
		   new String[] {
			 "name", "event",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getEvent_TimerAction(), 
		   source, 
		   new String[] {
			 "kind", "group",
			 "name", "TimerAction:0"
		   });		
		addAnnotation
		  (getEvent_CreateTimer(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "create-timer",
			 "namespace", "##targetNamespace",
			 "group", "#TimerAction:0"
		   });		
		addAnnotation
		  (getEvent_CancelTimer(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "cancel-timer",
			 "namespace", "##targetNamespace",
			 "group", "#TimerAction:0"
		   });		
		addAnnotation
		  (getEvent_Action(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "action",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (getEvent_Type(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "type"
		   });		
		addAnnotation
		  (eventTypeEEnum, 
		   source, 
		   new String[] {
			 "name", "event_type"
		   });		
		addAnnotation
		  (eventTypeObjectEDataType, 
		   source, 
		   new String[] {
			 "name", "event_type:Object",
			 "baseType", "event_type"
		   });		
		addAnnotation
		  (expressionEDataType, 
		   source, 
		   new String[] {
			 "name", "expression",
			 "baseType", "http://www.eclipse.org/emf/2003/XMLType#string"
		   });		
		addAnnotation
		  (forkEClass, 
		   source, 
		   new String[] {
			 "name", "fork",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (graphElementEClass, 
		   source, 
		   new String[] {
			 "name", "graph_element",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getGraphElement_Variable(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "variable",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (getGraphElement_Action(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "action",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (getGraphElement_Description(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "description"
		   });		
		addAnnotation
		  (getGraphElement_Name(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "name"
		   });		
		addAnnotation
		  (javaclassEDataType, 
		   source, 
		   new String[] {
			 "name", "javaclass",
			 "baseType", "http://www.eclipse.org/emf/2003/XMLType#string"
		   });		
		addAnnotation
		  (joinEClass, 
		   source, 
		   new String[] {
			 "name", "join",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (mailEClass, 
		   source, 
		   new String[] {
			 "name", "mail",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (nodeEClass, 
		   source, 
		   new String[] {
			 "name", "node",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getNode_Transition(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "transition",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (getNode_Event(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "event",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (processEClass, 
		   source, 
		   new String[] {
			 "name", "process",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getProcess_Start(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "start",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (getProcess_WorkflowDefinition(), 
		   source, 
		   new String[] {
			 "kind", "group",
			 "name", "WorkflowDefinition:5"
		   });		
		addAnnotation
		  (getProcess_State(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "state",
			 "namespace", "##targetNamespace",
			 "group", "#WorkflowDefinition:5"
		   });		
		addAnnotation
		  (getProcess_Join(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "join",
			 "namespace", "##targetNamespace",
			 "group", "#WorkflowDefinition:5"
		   });		
		addAnnotation
		  (getProcess_Fork(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "fork",
			 "namespace", "##targetNamespace",
			 "group", "#WorkflowDefinition:5"
		   });		
		addAnnotation
		  (getProcess_Decision(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "decision",
			 "namespace", "##targetNamespace",
			 "group", "#WorkflowDefinition:5"
		   });		
		addAnnotation
		  (getProcess_SuperState(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "super-state",
			 "namespace", "##targetNamespace",
			 "group", "#WorkflowDefinition:5"
		   });		
		addAnnotation
		  (getProcess_ProcessState(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "process-state",
			 "namespace", "##targetNamespace",
			 "group", "#WorkflowDefinition:5"
		   });		
		addAnnotation
		  (getProcess_Mail(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "mail",
			 "namespace", "##targetNamespace",
			 "group", "#WorkflowDefinition:5"
		   });		
		addAnnotation
		  (getProcess_Esb(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "esb",
			 "namespace", "##targetNamespace",
			 "group", "#WorkflowDefinition:5"
		   });		
		addAnnotation
		  (getProcess_WsNode(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "ws-node",
			 "namespace", "##targetNamespace",
			 "group", "#WorkflowDefinition:5"
		   });		
		addAnnotation
		  (getProcess_TaskNode(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "task-node",
			 "namespace", "##targetNamespace",
			 "group", "#WorkflowDefinition:5"
		   });		
		addAnnotation
		  (getProcess_End(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "end",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (getProcess_CreateTimer(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "create_timer",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (processStateEClass, 
		   source, 
		   new String[] {
			 "name", "process-state",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (startEClass, 
		   source, 
		   new String[] {
			 "name", "start",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (stateEClass, 
		   source, 
		   new String[] {
			 "name", "state",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (superStateEClass, 
		   source, 
		   new String[] {
			 "name", "super-state",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (taskEClass, 
		   source, 
		   new String[] {
			 "name", "task",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getTask_Blocking(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "blocking"
		   });		
		addAnnotation
		  (getTask_Duedate(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "duedate"
		   });		
		addAnnotation
		  (taskContainerEClass, 
		   source, 
		   new String[] {
			 "name", "task-container",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getTaskContainer_Task(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "task",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (transitionEClass, 
		   source, 
		   new String[] {
			 "name", "transition",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getTransition_From(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "from"
		   });		
		addAnnotation
		  (getTransition_If(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "if"
		   });		
		addAnnotation
		  (getTransition_To(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "to"
		   });		
		addAnnotation
		  (variableEClass, 
		   source, 
		   new String[] {
			 "name", "variable",
			 "kind", "empty"
		   });		
		addAnnotation
		  (getVariable_InitValue(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "initValue"
		   });		
		addAnnotation
		  (getVariable_Name(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "name"
		   });		
		addAnnotation
		  (getVariable_Type(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "type"
		   });		
		addAnnotation
		  (webServiceEClass, 
		   source, 
		   new String[] {
			 "name", "web-service",
			 "kind", "elementOnly"
		   });
	}

} //GdPackageImpl
